<?php

namespace App\Http\Controllers;

use App\Http\Requests\RegistRequest;
use App\Mail\RegistMail;
use App\User;
use Illuminate\Http\Request;
use Validator;
use DB;
use Mail;
use Auth;
class Regist extends Controller
{
    //

    /**
     * 加载注册模板
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function index(){

       return view('regist') ;


    }


    /**
     * 处理注册功能方法
     */
    public function store(Request $request, RegistRequest $registRequest)
    {
        //1.获取post请求
        $post = $request->all();
        //dd($post);
        //2.判断数据是否合规则 定制验证规则
        //创建表单验证规则 执行命令：make:request RegistRequest(规则名)
        //就会在app/http中生成Requests/Registrequire类
      //查询数据表中的email；
        //6.加密密码
        $post['password'] = bcrypt($post['password']);
        //往post数据中添加一个email_token的随机字符串的值
        $post['email_token'] = str_random(10);
        //7.给数据里填充字段
        //在app/User.php中
        $user = User::create($post);
       // send方法需要传递的参数是你要用哪个邮件类发完成你的邮件发送
        Mail::to($user)->send(new RegistMail($user['email_token']));
        //8.设置闪存信息
        //在resources/views/public中创建_message.blade.php
        session()->flash('success','注册成功');
        //9.跳转页面
        return redirect('/');
        //10.注册写完之后写登录 创建控制登录的控制器

    }

    /**
     * 激活邮箱
     */

    public function activation($token){

        //由于地址栏带的get参数是email_token,所以我们应该找到数据库中email_tonek等于$token的数据
        //where方法参数分析:
        //第一个参数是表中的那个字段的名称
        //第二个参数是判断条件,例如:= != > < like等等
        //第三个参数就是需要判断的值
        //需要注意的是:如果判断条件是等于,第二个参数可以省略,直接写第一个字段名称和第三个参数值,除了等于之外,其他的都不能省略
        $user = User::where('email_token','=',$token)->first();
        //dd($user);
        //将找到的用户数据状态改成1
        if ($user){
            //能找到用户数据，才能进行修改状态，激活账号
            $user->status = 1;
            //存入数据库
            $user->save();
            //如果想激活账号之后自动帮用户登录，直接调用方法
            Auth::login($user);
            //设置闪存信息
            session()->flash('success','账号激活成功');
            return redirect('/');


        }
        //如果找不到账号，运行这里
        session()->flash('danger','账号不存在');
        return redirect('/');

    }







}
